using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestImport.View.Bestellingen
{
    public partial class GroepBestelling : Form
    {
        private string vGroepcode = null;
        private int vBoeklijstID = 0;
        private DataView dv;
        private DataView dv1;
        private DataView dv2;
        private bool isBoekSelecteer = false;
        private bool isLeerlingSelecteer = false;
        private int aantalLeerling = 0;
        private int aantalBoek = 0;

        public GroepBestelling()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
            dv = boeklijstBindingSource.List as DataView;
            dv1 = boeklijstItemBindingSource.List as DataView;
            dv2 = leerlingBesteldAantallenBindingSource.List as DataView;
            
        }

        private void GroepBestelling_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.LeerlingBesteldAantallen' table. You can move, or remove it, as needed.
            
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Boeklijst' table. You can move, or remove it, as needed.
            //this.boeklijstTableAdapter.Fill(this.onsBoekenPakketDataSet.Boeklijst);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Boek' table. You can move, or remove it, as needed.
            this.boekTableAdapter.FillByIsInBoeklijst(this.onsBoekenPakketDataSet.Boek);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.BoeklijstItem' table. You can move, or remove it, as needed.
            //this.boeklijstItemTableAdapter.Fill(this.onsBoekenPakketDataSet.BoeklijstItem);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Groep' table. You can move, or remove it, as needed.
            this.groepTableAdapter.Fill(this.onsBoekenPakketDataSet.Groep);
            cmbGroep_SelectedIndexChanged(null, null);
        }

        private void cmbGroep_SelectedIndexChanged(object sender, EventArgs e)
        {
            vBoeklijstID = 0;
            try
            {
                vGroepcode = cmbGroep.SelectedValue.ToString();
                this.boeklijstTableAdapter.FillByGroepCode(this.onsBoekenPakketDataSet.Boeklijst, vGroepcode);
                //is er een boekenlijst
                if (dv.Count > 0)
                {
                    vBoeklijstID = int.Parse(dv[0]["boeklijstID"].ToString());
                }
                this.boeklijstItemTableAdapter.FillByBoeklijstID(this.onsBoekenPakketDataSet.BoeklijstItem, vBoeklijstID);
                for (int i = 0; i < boeklijstItemDataGridView.Rows.Count; i++)
                {
                    boeklijstItemDataGridView.Rows[i].Cells["dgvVolgnr"].Value = i + 1;
                    boeklijstItemDataGridView.Rows[i].Cells["dgvSelecteer"].Value = false;
                }
                boeklijstBindingSource.EndEdit();
                this.leerlingBesteldAantallenTableAdapter.FillByGroepCode(this.onsBoekenPakketDataSet.LeerlingBesteldAantallen, vGroepcode);
                for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
                {
                    //leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvVolgnr"].Value = i + 1;
                    leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = false;
                }
                leerlingBesteldAantallenBindingSource.EndEdit();
                isBoekSelecteer = true;
                isLeerlingSelecteer = true;
                lblBoeklijst.Text = "Boekenlijst voor " + vGroepcode;
                updateTotaal();
                updateTotaalLeerling();
                
            }
            catch (Exception ex) { ;}// MessageBox.Show(ex.Message); }
        }

        private void btnSelecteerBoek_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < boeklijstItemDataGridView.Rows.Count; i++)
            {
                if (isBoekSelecteer)
                    boeklijstItemDataGridView.Rows[i].Cells["dgvSelecteer"].Value = true;
                else
                    boeklijstItemDataGridView.Rows[i].Cells["dgvSelecteer"].Value = false;
            }
            isBoekSelecteer = !isBoekSelecteer;
            updateTotaal();
        }

        

        private void boeklijstItemDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                boeklijstItemDataGridView.EndEdit();
                updateTotaal();
            }
            catch (Exception ex) { ;}
        }

        private void updateTotaal()
        {
            int tot = 0;
            aantalBoek = 0;
            for (int i = 0; i < boeklijstItemDataGridView.Rows.Count; i++)
            {
                tot++;
                if (boeklijstItemDataGridView.Rows[i].Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("TRUE"))
                    aantalBoek++;

            }
            txtAantalBoek.Text = aantalBoek + " van " + tot;
        }

        private void updateTotaalLeerling()
        {
            int tot = 0;
            aantalLeerling = 0;
            for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
            {
                tot++;
                if (leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value.ToString().ToUpper().Equals("TRUE"))
                    aantalLeerling++;

            }
            txtAantalLeerling.Text = aantalLeerling +  " van " +  tot;
        }

        private void btnSelecteerLeerling_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
            {
                if (isLeerlingSelecteer)
                    leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = true;
                else
                    leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = false;
            }
            isLeerlingSelecteer = !isLeerlingSelecteer;
            updateTotaalLeerling();

        }

        private void leerlingBesteldAantallenDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                leerlingBesteldAantallenDataGridView.EndEdit();
                updateTotaalLeerling();
            }
            catch (Exception ex) { ;}
        }

        private void boeklijstItemDataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            
            try
            {
                int index = e.RowIndex;
                //Text = boeklijstItemDataGridView.Rows[index].Cells["dgvCategorie"].Value.ToString();
                //Text += " opmerking " + boeklijstItemDataGridView.Rows[index].Cells["dgvOpmerking"].Value.ToString();
                //if (boeklijstItemDataGridView.Rows[index].Cells["dgvOpmerking"].Value.Equals(DBNull.Value))
                    //Text += " nullekes";
            }
            catch (Exception ex) { ;}
        }

        private void btnRegistreer_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Wenst u de " + aantalBoek + " geselecteerde boeken bestellen voor de " + aantalLeerling + " geselecteerde leerlingen?", "Registreer bestelling", MessageBoxButtons.YesNo);
            if (res == DialogResult.Yes)
            {
                try
                {
                    DateTime tijd = DateTime.Now;
                    for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
                    {
                        int leerlingID = 0;
                        if (leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value.ToString().ToUpper().Equals("TRUE"))
                        {
                            leerlingID = int.Parse(dv2[i]["leerlingID"].ToString());
                            BestellingEenLeerling bl = new BestellingEenLeerling(leerlingID, vBoeklijstID, tijd);
                            for (int j = 0; j < boeklijstItemDataGridView.Rows.Count; j++)
                            {
                                int boekID = 0;
                                int vboeklijstItemID = 0;
                                if (boeklijstItemDataGridView.Rows[j].Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("TRUE"))
                                {
                                    boekID = int.Parse(dv1[j]["boekID"].ToString());
                                    vboeklijstItemID = int.Parse(dv1[j]["boeklijstItemID"].ToString());

                                    bl.verwerkBestelling(boekID, vboeklijstItemID, true);
                                }
                            }
                        }
                    }
                    //update aantal kolom
                    this.leerlingBesteldAantallenTableAdapter.FillByGroepCode(this.onsBoekenPakketDataSet.LeerlingBesteldAantallen, vGroepcode);
                    for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
                    {
                        leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = false;
                    }
                    leerlingBesteldAantallenBindingSource.EndEdit();
                    isLeerlingSelecteer = true;
                    updateTotaalLeerling();
                    MessageBox.Show("De bestellingen zijn geregistreerd!!", "!!!");
                }
                catch (Exception ex) {};// MessageBox.Show(ex.Message); }
            }
        }

        private void leerlingBesteldAantallenDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int index = e.RowIndex;
            int leerlingID =  int.Parse(leerlingBesteldAantallenDataGridView.Rows[index].Cells["dgvleerlingID"].Value.ToString());
            BestellingEenLeerling bl = new BestellingEenLeerling(leerlingID, vBoeklijstID, DateTime.Now);
            MessageBox.Show(bl.GetBesteldeBoeken(), "Bestelde boeken voor " + leerlingBesteldAantallenDataGridView.Rows[index].Cells["dgvNaam"].Value.ToString());
        }

        private void btnAnnuleer_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Wenst u de bestellingen voor de GANSE groep te annuleren?", "Annuleer bestellingen", MessageBoxButtons.YesNo);
            if (res == DialogResult.Yes)
            {
                try
                {
                    DateTime tijd = DateTime.Now;
                    for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
                    {
                        int leerlingID = 0;
                        leerlingID = int.Parse(dv2[i]["leerlingID"].ToString());
                        BestellingEenLeerling bl = new BestellingEenLeerling(leerlingID, vBoeklijstID, tijd);
                        bl.wisBestellingenVoorLeerling();
                    }
                    //update aantal kolom
                    this.leerlingBesteldAantallenTableAdapter.FillByGroepCode(this.onsBoekenPakketDataSet.LeerlingBesteldAantallen, vGroepcode);
                    for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
                    {
                        leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = false;
                    }
                    leerlingBesteldAantallenBindingSource.EndEdit();
                    isLeerlingSelecteer = true;
                    updateTotaalLeerling();
                    MessageBox.Show("De bestellingen zijn gewist!!", "!!!");
                }
                catch (Exception ex) { ;}// MessageBox.Show(ex.Message); }
            }
        }

        private void leerlingBesteldAantallenDataGridView_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                btnBestelDetail.Text = "Bestelfiche voor " + leerlingBesteldAantallenDataGridView.CurrentRow.Cells["dgvNaam"].Value.ToString();
            }
            catch (Exception ex) { ;}
        }

        private void btnBestelDetail_Click(object sender, EventArgs e)
        {
            int leerlingID = int.Parse(leerlingBesteldAantallenDataGridView.CurrentRow.Cells["dgvLeerlingID"].Value.ToString());
            string groepCode = leerlingBesteldAantallenDataGridView.CurrentRow.Cells["dgvGroepCode"].Value.ToString();
            string leerlingInfo = leerlingBesteldAantallenDataGridView.CurrentRow.Cells["dgvNaam"].Value.ToString();
            IndividueleBestelling f = new IndividueleBestelling(groepCode,leerlingID,leerlingInfo,this);
            f.ShowDialog();
        }

        public void updateAantalKolom()
        {
            this.leerlingBesteldAantallenTableAdapter.FillByGroepCode(this.onsBoekenPakketDataSet.LeerlingBesteldAantallen, vGroepcode);
            for (int i = 0; i < leerlingBesteldAantallenDataGridView.Rows.Count; i++)
            {
                leerlingBesteldAantallenDataGridView.Rows[i].Cells["dgvSelecteerLL"].Value = false;
            }
            leerlingBesteldAantallenBindingSource.EndEdit();
        }
    }
}